package ConnectionPool;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;


/*使用数据库连接池的方式，创建一个有10条连接的连接池
 * 然后创建100个线程，每个线程都会向连接池借用连接，借用到后，向数据库插入1条数据，然后归还这个连接。
 */
public class TestConnectionPool {

	public static void main(String[] args) {
		ConnectionPool cp = new ConnectionPool(10);
		for(int i = 0;i<100;i++) {
			new WorkingThreads("线程"+i,cp).start();
		}

	}
}
	
class WorkingThreads extends Thread{
	private ConnectionPool cp;
	public WorkingThreads(String name,ConnectionPool cp) {
		super(name);
		this.cp = cp;
	}
		
	//run重写的思路，获取连接池中的一个连接，然后开始工作
	public void run() {
		Connection c = cp.getConnection();
		System.out.println(this.getName()+ ":\t 获取了一根连接，并开始工作"  );
		try(Statement s = c.createStatement();) {
			//工作内容区域
			Thread.sleep(500);
				
		}catch(SQLException| InterruptedException e) {
			e.printStackTrace();	
		}
		cp.returnConnection(c);
	}			
}

